đ Construction d'un Cluster de Calcul avec Raspberry Pi đ„ïž
Ce tutoriel vous guide à travers les étapes nécessaires pour construire un cluster de calcul à l'aide de plusieurs Raspberry Pi, créant ainsi un puissant systÚme de calcul distribué à faible coût.
đ§ PrĂ©requis
- Plusieurs Raspberry Pi (modÚle 3 ou supérieur recommandé)
- Carte microSD avec Raspberry Pi OS installé pour chaque Pi
- Un switch réseau
- CĂąbles Ethernet
- AccĂšs Ă Internet
- Un ordinateur avec SSH pour se connecter aux Raspberry Pi
đ ïž Ătape 1 : PrĂ©paration des Raspberry Pi
Commencez par mettre Ă jour chaque Raspberry Pi :
sudo apt-get update
sudo apt-get upgrade
Ensuite, vous pouvez configurer chaque Raspberry Pi avec un script pour automatiser certaines tĂąches :
# Script de configuration initiale pour Raspberry Pi
#!/bin/bash
sudo apt-get update && sudo apt-get upgrade -y
sudo apt-get install -y vim htop git
sudo raspi-config nonint do_hostname $1
sudo systemctl enable ssh
Utilisez ce script pour configurer le nom d'hĂŽte et activer SSH sur chaque Raspberry Pi. Remplacez $1
par le nom d'hÎte souhaité.
đ Ătape 2 : Configuration du RĂ©seau
Connectez tous les Raspberry Pi au switch réseau en utilisant des cùbles Ethernet. Assurez-vous que chaque Pi a une adresse IP unique.
Vous pouvez utiliser un autre script pour fixer les adresses IP :
# Script pour configurer une adresse IP statique
#!/bin/bash
sudo cp /etc/dhcpcd.conf /etc/dhcpcd.conf.backup
echo "interface eth0" | sudo tee -a /etc/dhcpcd.conf
echo "static ip_address=$1/24" | sudo tee -a /etc/dhcpcd.conf
echo "static routers=$2" | sudo tee -a /etc/dhcpcd.conf
echo "static domain_name_servers=$3" | sudo tee -a /etc/dhcpcd.conf
sudo systemctl restart dhcpcd
Exécutez ce script sur chaque Pi en fournissant l'adresse IP, la passerelle (généralement l'adresse du routeur), et le serveur DNS.
đŠ Ătape 3 : Installation de MPI (Message Passing Interface)
Installez OpenMPI sur chaque Raspberry Pi :
sudo apt-get install -y mpich
đ Ătape 4 : Configuration SSH
Configurez les clés SSH pour permettre une connexion sans mot de passe entre les Pi :
ssh-keygen
ssh-copy-id pi@<adresse_ip_du_pi>
Pour automatiser cela, vous pouvez crĂ©er un script qui gĂ©nĂšre les clĂ©s et les distribue Ă chaque nĆud :
# Script pour configurer SSH sans mot de passe
#!/bin/bash
ssh-keygen -t rsa -N "" -f ~/.ssh/id_rsa
for ip in "$@"
do
ssh-copy-id pi@$ip
done
Utilisez ce script en passant les adresses IP de chaque Raspberry Pi comme paramĂštres.
âïž Ătape 5 : Test du Cluster MPI
Créez un fichier "hostfile" listant les adresses IP de tous les Pi :
nano hostfile
Ajoutez les adresses IP de tous les Pi dans ce fichier. Ensuite, testez le cluster :
mpirun -np 4 --hostfile hostfile hostname
Cette commande devrait afficher le nom d'hĂŽte de chaque Pi dans le cluster.
đ„ïž Ătape 6 : ExĂ©cution d'un Programme MPI
Créez un programme simple en C utilisant MPI :
#include <mpi.h>
#include <stdio.h>
int main(int argc, char** argv) {
MPI_Init(NULL, NULL);
int world_size;
MPI_Comm_size(MPI_COMM_WORLD, &world_size);
int world_rank;
MPI_Comm_rank(MPI_COMM_WORLD, &world_rank);
printf("Hello world from processor %d of %d\n", world_rank, world_size);
MPI_Finalize();
}
Compilez et exécutez ce programme sur le cluster :
mpicc -o hello_mpi hello_mpi.c
mpirun -np 4 --hostfile hostfile ./hello_mpi
Vous devriez voir un message de chaque Pi indiquant son rang et la taille totale du monde.
đ§ DĂ©pannage et Optimisation
Si vous rencontrez des problĂšmes lors de la configuration du cluster, voici quelques conseils :
- VĂ©rifiez que chaque Raspberry Pi a une adresse IP unique.
- Assurez-vous que le SSH est activé sur chaque Raspberry Pi.
- Testez les connexions SSH manuellement pour vous assurer qu'elles fonctionnent correctement.
- Utilisez
htop
pour surveiller l'utilisation des ressources sur chaque Pi. - Expérimentez avec différents paramÚtres de
mpirun
pour optimiser les performances.
đ Conclusion
Félicitations ! Vous avez maintenant un cluster de calcul fonctionnel utilisant plusieurs Raspberry Pi. Utilisez ce cluster pour des tùches de calcul intensif, des simulations ou pour apprendre les principes de base du calcul distribué.